#ifndef TASK_H
#define TASK_H

#include <stdint.h>

#define MAX_TASKS 4
#define STACK_SIZE 1024

// 任务状态
enum task_status {
    TASK_READY,
    TASK_RUNNING,
    TASK_FINISHED
};

// 任务控制块
struct task {
    uint64_t sp;              // 栈指针
    enum task_status status;  // 任务状态
    char name[16];           // 任务名称
    uint8_t stack[STACK_SIZE]; // 任务栈
};

// 任务函数类型
typedef void (*task_func_t)(void);

// 初始化任务系统
void task_init(void);

// 创建新任务
int task_create(const char* name, task_func_t func);

// 任务切换
void task_yield(void);

// 开始任务调度
void task_start(void);

// 获取当前任务信息
void task_info(void);

#endif
